home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / Python 1.1 / Mac / README < prev    next >
Encoding:
Text File  |  1994-09-16  |  6.8 KB  |  173 lines  |  [TEXT/R*ch]

  1. BUILDING PYTHON 1.1 FOR THE MACINTOSH
  2. *************************************
  3.  
  4. Python can be built on the Mac using either THINK C 6.0 (or 7.0) or
  5. MPW 3.2.  In the past it has been compiled with earlier versions of
  6. these compilers, but no guarantees are made that the source is still
  7. compatible with those versions.  Likewise, new compiler versions may
  8. effectively change the language accepted (or the library provided!)
  9. and thus cause problems.
  10.  
  11.  
  12. 1. Using Think C 6.0
  13. ====================
  14.  
  15. 1.1 The directory structure
  16. ---------------------------
  17.  
  18. I duplicate the UNIX directory structure from the distribution.  The
  19. subdirectories needed to compile are: Mac, Include, Parser, Python,
  20. Objects, Modules.  (Don't bother with Grammar and the parser
  21. generator, nor with the Doc subdirectory.)
  22.  
  23. For running and testing, you also need Lib and its subdirectories test
  24. and stdwin.  You could also copy some things from the Demo/stdwin
  25. directory (unfortunately most other demos are UNIX specific and even
  26. many stdwin demos are).
  27.  
  28. Make sure there is no config.c file in the Modules subdirectory (if
  29. you copy from a directory where you have done a UNIX build this might
  30. occur).  Also don't use the config.h generated on UNIX.
  31.  
  32. 1.2 The project file
  33. --------------------
  34.  
  35. I put all source files in one project, which I place in the parent
  36. directory of the source directories.
  37.  
  38. 1.2.1 Project type
  39.  
  40. (This is the Set Project Type... dialog in the Project menu.)
  41.  
  42. Set the creator to PYTH; turn on "far data"; leave "far code" and
  43. "separate strs" unchecked (they just serve to bloat the application).
  44. A partition size of 1000K should be enough to run the standard test
  45. suite (which requires a lot of memory because it stress tests the
  46. parser quite a bit) and most demos or medium-size applications.  The
  47. interpreter will do basic things in as little at 500K but this may
  48. prevent parsing larger modules.
  49.  
  50. 1.2.2 Compiler options
  51.  
  52. (This is the Options -> THINK C ... dialog in the Edit menu.)
  53.  
  54.     - Start with Factory Settings.
  55.  
  56.     - In the Prefix, remove #include <MacHeaders> and add
  57.         #define HAVE_CONFIG_H
  58.  
  59.     - Choose any optimizer and debugger settings you like.  - You
  60.     can choose 4-byte ints if you want.  This requires that you
  61.     rebuild the ANSI and unix libraries with 4-bytes ints as well
  62.     (better make copies with names like ANSI 32 bit).  With 4-byte
  63.     ints the interpreter is marginally bigger and somewhat (~10%)
  64.     slower, but Python programs can use strings and lists with
  65.     more than 32000 items (with 2-byte ints these can cause
  66.     crashes).  The range of Python integers is not affected (these
  67.     are always represented as longs).
  68.  
  69. 1.2.3 Files to add
  70.  
  71. (This is the Add Files... dialog in the Source menu.)
  72.  
  73. The following source files must be added to the project.  I use a
  74. separate segment for each begin letter -- this avoids segment
  75. overflow, except for 'c', where you have to put either ceval.c or
  76. compile.c in a separate segment.  You could also group them by
  77. subdirectory or function, but you may still have to split segments
  78. arbitrarily because of the 32000 bytes restriction.
  79.  
  80.     - From Mac: all .c files except fopenRF.c [[which shouldn't even
  81.     be there]].
  82.  
  83.     - From Parser: acceler.c, grammar1.c, intrcheck.c,
  84.     myreadline.c, node.c, parser.c, parsetok.c, tokenizer.c.
  85.  
  86.     - From Python: bltinmodule.c, ceval.c, cgensupport.c,
  87.     compile.c, errors.c, getopt.c, graminit.c, import.c,
  88.     marshal.c, modsupport.c, mystrtoul.c, pythonmain.c,
  89.     pythonrun.c, sigcheck.c, structmember.c, sysmodule.c,
  90.     traceback.c (i.e. all .c files except dup2.c, fmod.c,
  91.     frozenmain.c, getcwd.c, getmtime.c, memmove.c, sigcheck.c,
  92.     strerror.c, strtod.c, thread.c)
  93.  
  94.     - From Objects: all .c files except xxobject.c.
  95.  
  96.     - From Modules: all the modules listed in config.c (in the Mac
  97.     subdirectory) in the initializer for inittab[], before
  98.     "ADDMODULE MARKER 2".  Also add md5c.c if you add md5module.c,
  99.     and regexpr.c if you add regexmodule.c.  (You'll find
  100.     macmodule.c in the Mac subdirectory, so it should already have
  101.     been added in a previous step.)  Note that for most modules,
  102.     the source file is called <name>module.c, but for a few long
  103.     module names it is just <module>.c.  Don't add stdwinmodule.c
  104.     yet,
  105.  
  106. The following THINK C libraries must be added: from Standard
  107. Libraries, ANSI and unix; from Mac Libraries, MacTraps.  I put each
  108. library in a separate segment.  Also see my earlier remark on 4-byte
  109. ints.
  110.  
  111. 1.4 Adding STDWIN
  112. -----------------
  113.  
  114. STDWIN is built in two separate projects: stdwin.pi contains the core
  115. STDWIN implementation from Ports/mac, textedit.pi contains the files
  116. from Packs/textedit.  Use the same compiler options as for Python and
  117. the same general source setup (in a sister directory of the toplevel
  118. Python directory).  Put all sources in the same segment.  To
  119. stdwin.pi, also add Tools/strdup.c and Gen/wtextbreak.c.
  120.  
  121. The two projects can now be added as libraries to the Python project.
  122. You must also add stdwinmodule.c and add "#define USE_STDWIN" to the
  123. Prefix in the compiler options dialog (this only affects macmain.c and
  124. config.c).
  125.  
  126. Note that stdwinmodule.c contains an #include statement that
  127. references "stdwin.h" by relative path name -- if the stdwin toplevel
  128. directory is not a sibling of the python toplevel directory, you may
  129. have to adjust the number of colons in the pathname.
  130.  
  131. 1.5 Resources
  132. -------------
  133.  
  134. Since I created them with ResEdit I have no text source of the
  135. resources needed to give the application an icon etc...  You can copy
  136. the size, bundle, file reference and icon resources from the
  137. distributed Python application with ResEdit.  THINK C automatically
  138. copies resources into the application file from a file
  139. <projectname>.rsrc.
  140.  
  141.  
  142. 2. Using MPW 3.2
  143. ================
  144.  
  145. The subdirectory MPW contains a README.MPW file, a buildall script and
  146. several Makefiles, kindly contributed by Richard Walker of Island
  147. Software.  Move these files to the corresponding locations relative to
  148. the Python root directory (where Mac-Makefile should become Makefile
  149. in the Mac subdirectory, etc.), and run the buildall script.  The
  150. README.MPW file contains more instructions and caveats (I've added
  151. some remarks of my own at the end).
  152.  
  153. Some notes:
  154.  
  155. - The MPW and THINK C ports share all source files, including config.c
  156.   and config.h -- all differentiation is done based on #ifdef THINK_C
  157.   or #ifdef MPW (#ifdef macintosh is used for code that should be seen
  158.   by all Mac compilers).
  159.  
  160. - The dynload subdirectory contains an attempt to create dynamically
  161.   loadable modules from CODE segments.  This was not very successful
  162.   due to the restrictions on CODE segments (no global variables, no
  163.   calls to external functions).  Maybe Apple's new shared library
  164.   manager will be a better starting point.
  165.  
  166. - I haven't tried building STDWIN with MPW recently.  There is MPW
  167.   specific code all over the STDWIN source but it is for a much older
  168.   version of the compiler and library.
  169.  
  170.  
  171. --Guido van Rossum, CWI, Amsterdam <Guido.van.Rossum@cwi.nl>
  172. <URL:http://www.cwi.nl/cwi/people/Guido.van.Rossum.html>
  173.